package com.zw.mes.module.proStrucEdit.mapper;

import com.zw.mes.module.proStrucEdit.model.ProStrucEditProjectModel;
import com.zw.mes.module.proStrucEdit.model.SpecialModel;
import com.zw.mes.module.proStrucEdit.model.VwDsnProStrucModel;
import com.zw.mes.module.prodtaskmanager.entity.VwProject;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 徐一贺
 * @className ProStrucEditMapper
 * @description 产品结构编辑持久层
 * @date 2021/3/11 15:14
 * @versron ver 1.0
 */
@Repository
public interface ProStrucEditMapper {
    /**
     * 加载可编辑非设计类项目列表
     * @param param
     * @return
     */
    List<ProStrucEditProjectModel> ProStrucEditProjectModel(ProStrucEditProjectModel param);

    /**
     * 获取专业列表
     * @return
     */
    List<SpecialModel> findSpecialList();

    /**
     * 根据项目视图主键获取项目信息
     * @param proId 项目视图主键
     * @return
     */
    VwProject getVwProjectByPrimaryKey(Integer proId);

    /**
     * 加载可编辑非设计类项目的产品结构列表
     * @param param
     * @return
     */
    List<VwDsnProStrucModel> findProStrucEditList(VwDsnProStrucModel param);

    /**
     * 根据主键们获取生产结构列表
     * @param idStr
     * @return
     */
    List<VwDsnProStrucModel> findVwDsnProStrucModelByPrimaryKeys(String idStr);

    /**
     * 根据主键更新提交状态和提交时间
     * @param vwDsnProStrucModel
     * @return
     */
    int updateVwDsnProStrucModelCompStatusByPrimaryKey(VwDsnProStrucModel vwDsnProStrucModel);

    /**
     * 根据主键获取生产结构
     * @param id
     * @return
     */
    VwDsnProStrucModel getVwDsnProStrucModelByPrimaryKey(Integer id);
    /**
     * 根据主键更新删除状态
     * @param vwDsnProStrucModel
     * @return
     */
    int updateVwDsnProStrucModelIsDelByPrimaryKey(VwDsnProStrucModel vwDsnProStrucModel);

    /**
     * 新增产品结构
     * @param vwDsnProStrucModel
     * @return
     */
    int insertvwDsnProStrucModel(VwDsnProStrucModel vwDsnProStrucModel);

    /**
     * 根据主键更改 专业 产品结构名称 编辑人 编辑时间
     * @param vwDsnProStrucModel
     * @return
     */
    int updateDsnProStrucModelToEdit(VwDsnProStrucModel vwDsnProStrucModel);

    /**
     * 根据proId和proPart获取产品结构
     * @param vwDsnProStrucModel
     * @return
     */
    VwDsnProStrucModel getVwDsnProStrucModelByProIdAndProPart(VwDsnProStrucModel vwDsnProStrucModel);

    /**
     * 根据proId整体获取产品结构
     * @param vwDsnProStrucModel
     * @return
     */
    VwDsnProStrucModel getWoleVwDsnProStrucExistModelByProId(VwDsnProStrucModel vwDsnProStrucModel);/**
     * 根据proId整体获取产品结构
     * @param vwDsnProStrucModel
     * @return
     */
    VwDsnProStrucModel getWoleVwDsnProStrucExistModelByProIdAndNotId(VwDsnProStrucModel vwDsnProStrucModel);
}
